package com.bocloud.cmp.interfaces.app.resource;

import java.util.List;
import java.util.Map;
import com.bocloud.cmp.entity.app.resource.OpenshiftCluster;
import com.bocloud.common.model.BsmResult;
import com.bocloud.common.model.Param;

/**
 * @author Zaney
 * @data:2017年3月28日
 * @describe:openshift集群service接口
 */
public interface OpenshiftClusterService {
	/**
	 * 创建openshift集群
	 * 
	 * @param user
	 * @param cluster
	 * @return
	 */
	public BsmResult create(Long userId, OpenshiftCluster cluster);

	/**
	 * 获取集群个数
	 * 
	 * @return
	 */
	public BsmResult getTotal();

	/**
	 * 获取集群详情
	 * 
	 * @param id
	 * @return
	 */
	public BsmResult detail(Long id);

	/**
	 * 修改集群信息
	 * 
	 * @param registry
	 * @param userId
	 * @return
	 */
	public BsmResult modify(OpenshiftCluster cluster, Long userId);

	/**
	 * 列表查询
	 * 
	 * @param page
	 * @param rows
	 * @param params
	 * @param sorter
	 * @param simple
	 * @return
	 */
	public BsmResult list(int page, int rows, List<Param> params, Map<String, String> sorter, Boolean simple);

	/**
	 * 删除集群
	 * 
	 * @param ids
	 * @param userId
	 * @return
	 */
	public BsmResult remove(List<Long> ids, Long userId);

	/**
	 * 按照应用获取集群
	 * 
	 * @author zjm
	 * @date 2017年4月9日
	 *
	 * @param appId
	 * @return
	 * @throws Exception
	 */
	public BsmResult listOpenshiftClusterByAppId(Long appId) ;
	/**
	 * 获取token
	 * @param proxyUrl
	 * @return
	 */
	public String getToken(String proxyUrl);
	/**
	 * 查询所有未删除的集群
	 * @return
	 */
	public List<OpenshiftCluster> getclusters();
	/**
	 * 修改集群某些字段信息
	 * @param fields
	 */
	public void updateWithField(OpenshiftCluster cluster, String[] fields);
	/**
	 * 添加节点
	 * @param newNodeType
	 * @param newNodeName
	 * @param newNodeLabel
	 * @param clusterId
	 * @return
	 */
	public BsmResult addNode(String newNodeType, String newNodeName, String newNodeLabel, Long clusterId);
	/**
	 * 移除节点
	 * @param nodeName
	 * @param clusterId
	 * @return
	 */
	public BsmResult delNode(String nodeName, Long clusterId);
	/**
	 * master IP、namespace、username校验
	 * @param cluster
	 * @return
	 */
	public BsmResult checkMaster(OpenshiftCluster cluster);
}
